package com.ming_za.odupdaterserver.core.utils.account.api;

import com.ming_za.odupdaterserver.core.utils.account.param.AccountPackage;

import java.util.List;
import java.util.Map;

/**
 * 账号存储接口，用于接入外部存储代码
 */
public interface AccountStorage {

    /**
     * 保存账号
     * @param accountPackage 账号数据信息
     */
    void saveAccount(AccountPackage accountPackage);

    /**
     * 获取账号数据包
     * @param account 账号
     */
    AccountPackage getAccountPackage(long account);

    /**
     * 获取所有账号数据Map
     * @return Map<账号,数据包>
     */
    Map<Long,AccountPackage> getAllAccountMap();

    /**
     * 获取所有账号数据表
     * @return 账号数据表列表
     */
    List<AccountPackage> getAllAccountPackage();

    /**
     * 删除账号
     * @param account 账号
     */
    void deleteAccount(long account);

    /**
     * 设置账号密码
     * @param account 账号
     * @param password 密码（已加密）
     */
    void setPassword(long account, String password);

    /**
     * 设置账号token密钥
     * @param account 账号
     * @param token token密钥
     */
    void setToken(long account, byte[] token);

    /**
     * 设置账号等级
     * @param account 账号
     * @param level 等级
     */
    void setLevel(long account, int level);

    /**
     * 保存账号登录数据
     * @param account 账号
     * @param token token密钥
     * @param loginIp 登录ip
     * @param loginTime 登录时间
     */
    void saveLogin(long account, byte[] token,String loginIp,long loginTime);

    /**
     * 设置最后一次登录ip
     * @param account 账号
     * @param loginIp ip
     */
    void setLastIp(long account,String loginIp);

}
